﻿using System;

namespace UtilZ.Dotnet.Ex.DataStruct
{
    /// <summary>
    /// 定时任务接口
    /// </summary>
    public interface ITimingTask
    {
        /// <summary>
        /// 任务名称
        /// </summary>
        string Name { get; }

        /// <summary>
        /// 获取下次执行需要等待的时长,单位:毫秒
        /// </summary>
        /// <param name="timestamp">当前时间戳</param>
        /// <returns>当前任务到下一次执行的还需要的延迟时间</returns>
        long GetNextExcuteWaitMilliseconds();

        /// <summary>
        /// 判断当前任务是否需要执行[true:需要执行;false:不需要执行]
        /// </summary>
        /// <returns>true:需要执行;false:不需要执行</returns>
        bool CanExcute();

        /// <summary>
        /// 执行任务
        /// </summary>
        bool Excute();

    }

}
